Enter the directory of the maca folder on your drive and the name of the tissue you want to analyze.

tissue_of_interest = "Tongue"
Warning message:
package ‘Seurat’ was built under R version 3.4.3 
library(here)
here() starts at /Users/olgabot/code/tabula-muris
source(here("00_data_ingest", "02_tissue_analysis_rmd", "boilerplate.R"))
package ‘dplyr’ was built under R version 3.4.2
Attaching package: ‘dplyr’

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union
tiss = load_tissue_facs(tissue_of_interest)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data matrix"

  |                                                                                       
  |                                                                                 |   0%
  |                                                                                       
  |=================================================================================| 100%
Calculating gene means
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variance to mean ratios
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

Later on (in FindClusters and TSNE) you will pick a number of principal components to use. This has the effect of keeping the major directions of variation in the data and, ideally, supressing noise. There is no correct answer to the number to use, but a decent rule of thumb is to go until the plot plateaus.

PCElbowPlot(object = tiss)

Choose the number of principal components to use.

# Set number of principal components. 
n.pcs = 10

The clustering is performed based on a nearest neighbors graph. Cells that have similar expression will be joined together. The Louvain algorithm looks for groups of cells with high modularity–more connections within the group than between groups. The resolution parameter determines the scale…higher resolution will give more clusters, lower resolution will give fewer.

For the top-level clustering, aim to under-cluster instead of over-cluster. It will be easy to subset groups and further analyze them below.

# Set resolution 
res.used <- 0.7
tiss <- FindClusters(object = tiss, reduction.type = "pca", dims.use = 1:n.pcs, 
    resolution = res.used, print.output = 0, save.SNN = TRUE, force.recalc = TRUE)

To visualize

# If cells are too spread out, you can raise the perplexity. If you have few cells, try a lower perplexity (but never less than 10).
tiss <- RunTSNE(object = tiss, dims.use = 1:n.pcs, seed.use = 20, perplexity=30)
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 137-174 (Tongue_facs.Rmd) 
# note that you can set do.label=T to help label individual clusters
TSNEPlot(object = tiss, do.label = T, pt.size = 1.2, label.size = 4)

Check expression of genes of interset.

Dotplots let you see the intensity of exppression and the fraction of cells expressing for each of your genes of interest.

How big are the clusters?

table(tiss@ident)

  0   1   2   3   4   5   6   7 
368 253 196 182 161 121 108  27 
tiss1=BuildClusterTree(tiss)
[1] "Finished averaging RNA for cluster 0"
[1] "Finished averaging RNA for cluster 1"
[1] "Finished averaging RNA for cluster 2"
[1] "Finished averaging RNA for cluster 3"
[1] "Finished averaging RNA for cluster 4"
[1] "Finished averaging RNA for cluster 5"
[1] "Finished averaging RNA for cluster 6"
[1] "Finished averaging RNA for cluster 7"

Which markers identify a specific cluster?

#cluster1.markers <- FindMarkers(object = tiss, ident.1 = 1, min.pct = 0.25, only.pos = TRUE, thresh.use = 0.25)
#cluster2.markers <- FindMarkers(object = tiss, ident.1 = 2, min.pct = 0.25, only.pos = TRUE, thresh.use = 0.25)
#cluster3.markers <- FindMarkers(object = tiss, ident.1 = 3, min.pct = 0.25, only.pos = TRUE, thresh.use = 0.25)
#cluster4.markers <- FindMarkers(object = tiss, ident.1 = 4, min.pct = 0.25, only.pos = TRUE, thresh.use = 0.25)
#cluster5.markers <- FindMarkers(object = tiss, ident.1 = 5, min.pct = 0.25, only.pos = TRUE, thresh.use = 0.25)
#cluster6.markers <- FindMarkers(object = tiss, ident.1 = 6, min.pct = 0.25, only.pos = TRUE, thresh.use = 0.25)
cluster7.markers <- FindMarkers(object = tiss, ident.1 = 6, min.pct = 0.25, only.pos = TRUE, thresh.use = 0.25)

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 24s      
   |++                                                | 2 % ~01m 22s      
   |++                                                | 3 % ~01m 19s      
   |+++                                               | 4 % ~01m 18s      
   |+++                                               | 5 % ~01m 17s      
   |++++                                              | 6 % ~01m 18s      
   |++++                                              | 7 % ~01m 16s      
   |+++++                                             | 8 % ~01m 17s      
   |+++++                                             | 9 % ~01m 16s      
   |++++++                                            | 10% ~01m 15s      
   |++++++                                            | 11% ~01m 14s      
   |+++++++                                           | 12% ~01m 13s      
   |+++++++                                           | 13% ~01m 13s      
   |++++++++                                          | 14% ~01m 12s      
   |++++++++                                          | 15% ~01m 11s      
   |+++++++++                                         | 16% ~01m 10s      
   |+++++++++                                         | 17% ~01m 09s      
   |++++++++++                                        | 18% ~01m 08s      
   |++++++++++                                        | 19% ~01m 07s      
   |+++++++++++                                       | 20% ~01m 06s      
   |+++++++++++                                       | 21% ~01m 05s      
   |++++++++++++                                      | 22% ~01m 04s      
   |++++++++++++                                      | 23% ~01m 04s      
   |+++++++++++++                                     | 24% ~01m 03s      
   |+++++++++++++                                     | 26% ~01m 02s      
   |++++++++++++++                                    | 27% ~01m 01s      
   |++++++++++++++                                    | 28% ~60s          
   |+++++++++++++++                                   | 29% ~59s          
   |+++++++++++++++                                   | 30% ~58s          
   |++++++++++++++++                                  | 31% ~57s          
   |++++++++++++++++                                  | 32% ~56s          
   |+++++++++++++++++                                 | 33% ~55s          
   |+++++++++++++++++                                 | 34% ~54s          
   |++++++++++++++++++                                | 35% ~54s          
   |++++++++++++++++++                                | 36% ~53s          
   |+++++++++++++++++++                               | 37% ~52s          
   |+++++++++++++++++++                               | 38% ~51s          
   |++++++++++++++++++++                              | 39% ~50s          
   |++++++++++++++++++++                              | 40% ~49s          
   |+++++++++++++++++++++                             | 41% ~49s          
   |+++++++++++++++++++++                             | 42% ~48s          
   |++++++++++++++++++++++                            | 43% ~47s          
   |++++++++++++++++++++++                            | 44% ~46s          
   |+++++++++++++++++++++++                           | 45% ~45s          
   |+++++++++++++++++++++++                           | 46% ~44s          
   |++++++++++++++++++++++++                          | 47% ~44s          
   |++++++++++++++++++++++++                          | 48% ~43s          
   |+++++++++++++++++++++++++                         | 49% ~42s          
   |+++++++++++++++++++++++++                         | 50% ~41s          
   |++++++++++++++++++++++++++                        | 51% ~40s          
   |+++++++++++++++++++++++++++                       | 52% ~39s          
   |+++++++++++++++++++++++++++                       | 53% ~39s          
   |++++++++++++++++++++++++++++                      | 54% ~38s          
   |++++++++++++++++++++++++++++                      | 55% ~37s          
   |+++++++++++++++++++++++++++++                     | 56% ~36s          
   |+++++++++++++++++++++++++++++                     | 57% ~36s          
   |++++++++++++++++++++++++++++++                    | 58% ~35s          
   |++++++++++++++++++++++++++++++                    | 59% ~34s          
   |+++++++++++++++++++++++++++++++                   | 60% ~33s          
   |+++++++++++++++++++++++++++++++                   | 61% ~32s          
   |++++++++++++++++++++++++++++++++                  | 62% ~31s          
   |++++++++++++++++++++++++++++++++                  | 63% ~31s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~30s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~29s          
   |++++++++++++++++++++++++++++++++++                | 66% ~28s          
   |++++++++++++++++++++++++++++++++++                | 67% ~27s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~26s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~26s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~25s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~24s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~23s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~22s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~21s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~21s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~20s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~19s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~18s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 24s
#cluster0.markers <- FindMarkers(object = tiss, ident.1 = 0, min.pct = 0.25, only.pos = TRUE, thresh.use = 0.25)
print(x = head(x = cluster6.markers, n = 30))

You can also compute all markers for all clusters at once. This may take some time.

tiss.markers <- FindAllMarkers(object = tiss, only.pos = TRUE, min.pct = 0.25, thresh.use = 0.25)

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 21s      
   |++                                                | 2 % ~01m 18s      
   |++                                                | 3 % ~01m 17s      
   |+++                                               | 4 % ~01m 17s      
   |+++                                               | 5 % ~01m 16s      
   |++++                                              | 6 % ~01m 15s      
   |++++                                              | 7 % ~01m 15s      
   |+++++                                             | 8 % ~01m 14s      
   |+++++                                             | 9 % ~01m 13s      
   |++++++                                            | 10% ~01m 12s      
   |++++++                                            | 11% ~01m 11s      
   |+++++++                                           | 12% ~01m 10s      
   |+++++++                                           | 13% ~01m 09s      
   |++++++++                                          | 14% ~01m 08s      
   |++++++++                                          | 15% ~01m 07s      
   |+++++++++                                         | 16% ~01m 07s      
   |+++++++++                                         | 17% ~01m 06s      
   |++++++++++                                        | 18% ~01m 05s      
   |++++++++++                                        | 19% ~01m 04s      
   |+++++++++++                                       | 20% ~01m 04s      
   |+++++++++++                                       | 21% ~01m 03s      
   |++++++++++++                                      | 22% ~01m 03s      
   |++++++++++++                                      | 23% ~01m 02s      
   |+++++++++++++                                     | 24% ~01m 01s      
   |+++++++++++++                                     | 26% ~60s          
   |++++++++++++++                                    | 27% ~59s          
   |++++++++++++++                                    | 28% ~58s          
   |+++++++++++++++                                   | 29% ~57s          
   |+++++++++++++++                                   | 30% ~56s          
   |++++++++++++++++                                  | 31% ~55s          
   |++++++++++++++++                                  | 32% ~54s          
   |+++++++++++++++++                                 | 33% ~53s          
   |+++++++++++++++++                                 | 34% ~53s          
   |++++++++++++++++++                                | 35% ~52s          
   |++++++++++++++++++                                | 36% ~51s          
   |+++++++++++++++++++                               | 37% ~51s          
   |+++++++++++++++++++                               | 38% ~50s          
   |++++++++++++++++++++                              | 39% ~50s          
   |++++++++++++++++++++                              | 40% ~49s          
   |+++++++++++++++++++++                             | 41% ~48s          
   |+++++++++++++++++++++                             | 42% ~47s          
   |++++++++++++++++++++++                            | 43% ~46s          
   |++++++++++++++++++++++                            | 44% ~45s          
   |+++++++++++++++++++++++                           | 45% ~45s          
   |+++++++++++++++++++++++                           | 46% ~44s          
   |++++++++++++++++++++++++                          | 47% ~43s          
   |++++++++++++++++++++++++                          | 48% ~42s          
   |+++++++++++++++++++++++++                         | 49% ~42s          
   |+++++++++++++++++++++++++                         | 50% ~41s          
   |++++++++++++++++++++++++++                        | 51% ~40s          
   |+++++++++++++++++++++++++++                       | 52% ~39s          
   |+++++++++++++++++++++++++++                       | 53% ~38s          
   |++++++++++++++++++++++++++++                      | 54% ~37s          
   |++++++++++++++++++++++++++++                      | 55% ~36s          
   |+++++++++++++++++++++++++++++                     | 56% ~36s          
   |+++++++++++++++++++++++++++++                     | 57% ~35s          
   |++++++++++++++++++++++++++++++                    | 58% ~34s          
   |++++++++++++++++++++++++++++++                    | 59% ~33s          
   |+++++++++++++++++++++++++++++++                   | 60% ~32s          
   |+++++++++++++++++++++++++++++++                   | 61% ~31s          
   |++++++++++++++++++++++++++++++++                  | 62% ~30s          
   |++++++++++++++++++++++++++++++++                  | 63% ~30s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~29s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~28s          
   |++++++++++++++++++++++++++++++++++                | 66% ~27s          
   |++++++++++++++++++++++++++++++++++                | 67% ~26s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~25s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~25s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~24s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~23s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~22s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~21s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~20s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~20s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~19s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~18s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~17s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~02s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 19s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 29s      
   |++                                                | 2 % ~01m 29s      
   |++                                                | 3 % ~01m 27s      
   |+++                                               | 4 % ~01m 27s      
   |+++                                               | 5 % ~01m 26s      
   |++++                                              | 6 % ~01m 27s      
   |++++                                              | 7 % ~01m 27s      
   |+++++                                             | 8 % ~01m 26s      
   |+++++                                             | 9 % ~01m 26s      
   |++++++                                            | 10% ~01m 25s      
   |++++++                                            | 11% ~01m 25s      
   |+++++++                                           | 12% ~01m 24s      
   |+++++++                                           | 13% ~01m 23s      
   |++++++++                                          | 14% ~01m 22s      
   |++++++++                                          | 15% ~01m 21s      
   |+++++++++                                         | 16% ~01m 20s      
   |+++++++++                                         | 17% ~01m 19s      
   |++++++++++                                        | 18% ~01m 18s      
   |++++++++++                                        | 19% ~01m 17s      
   |+++++++++++                                       | 20% ~01m 16s      
   |+++++++++++                                       | 21% ~01m 15s      
   |++++++++++++                                      | 22% ~01m 14s      
   |++++++++++++                                      | 23% ~01m 14s      
   |+++++++++++++                                     | 24% ~01m 13s      
   |+++++++++++++                                     | 26% ~01m 12s      
   |++++++++++++++                                    | 27% ~01m 10s      
   |++++++++++++++                                    | 28% ~01m 10s      
   |+++++++++++++++                                   | 29% ~01m 09s      
   |+++++++++++++++                                   | 30% ~01m 08s      
   |++++++++++++++++                                  | 31% ~01m 07s      
   |++++++++++++++++                                  | 32% ~01m 06s      
   |+++++++++++++++++                                 | 33% ~01m 06s      
   |+++++++++++++++++                                 | 34% ~01m 05s      
   |++++++++++++++++++                                | 35% ~01m 05s      
   |++++++++++++++++++                                | 36% ~01m 04s      
   |+++++++++++++++++++                               | 37% ~01m 03s      
   |+++++++++++++++++++                               | 38% ~01m 02s      
   |++++++++++++++++++++                              | 39% ~01m 01s      
   |++++++++++++++++++++                              | 40% ~60s          
   |+++++++++++++++++++++                             | 41% ~59s          
   |+++++++++++++++++++++                             | 42% ~58s          
   |++++++++++++++++++++++                            | 43% ~57s          
   |++++++++++++++++++++++                            | 44% ~55s          
   |+++++++++++++++++++++++                           | 45% ~54s          
   |+++++++++++++++++++++++                           | 46% ~53s          
   |++++++++++++++++++++++++                          | 47% ~52s          
   |++++++++++++++++++++++++                          | 48% ~52s          
   |+++++++++++++++++++++++++                         | 49% ~51s          
   |+++++++++++++++++++++++++                         | 50% ~50s          
   |++++++++++++++++++++++++++                        | 51% ~49s          
   |+++++++++++++++++++++++++++                       | 52% ~48s          
   |+++++++++++++++++++++++++++                       | 53% ~47s          
   |++++++++++++++++++++++++++++                      | 54% ~47s          
   |++++++++++++++++++++++++++++                      | 55% ~45s          
   |+++++++++++++++++++++++++++++                     | 56% ~44s          
   |+++++++++++++++++++++++++++++                     | 57% ~43s          
   |++++++++++++++++++++++++++++++                    | 58% ~42s          
   |++++++++++++++++++++++++++++++                    | 59% ~41s          
   |+++++++++++++++++++++++++++++++                   | 60% ~40s          
   |+++++++++++++++++++++++++++++++                   | 61% ~39s          
   |++++++++++++++++++++++++++++++++                  | 62% ~38s          
   |++++++++++++++++++++++++++++++++                  | 63% ~37s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~36s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~35s          
   |++++++++++++++++++++++++++++++++++                | 66% ~34s          
   |++++++++++++++++++++++++++++++++++                | 67% ~33s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~32s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~31s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~30s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~28s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~27s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~26s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~25s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~24s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~23s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~22s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~21s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~17s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 39s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 28s      
   |++                                                | 2 % ~02m 22s      
   |++                                                | 3 % ~02m 20s      
   |+++                                               | 4 % ~02m 19s      
   |+++                                               | 5 % ~02m 18s      
   |++++                                              | 6 % ~02m 16s      
   |++++                                              | 7 % ~02m 14s      
   |+++++                                             | 8 % ~02m 15s      
   |+++++                                             | 9 % ~02m 14s      
   |++++++                                            | 10% ~02m 12s      
   |++++++                                            | 11% ~02m 12s      
   |+++++++                                           | 12% ~02m 11s      
   |+++++++                                           | 13% ~02m 10s      
   |++++++++                                          | 14% ~02m 09s      
   |++++++++                                          | 15% ~02m 08s      
   |+++++++++                                         | 16% ~02m 08s      
   |+++++++++                                         | 17% ~02m 06s      
   |++++++++++                                        | 18% ~02m 05s      
   |++++++++++                                        | 19% ~02m 03s      
   |+++++++++++                                       | 20% ~02m 01s      
   |+++++++++++                                       | 21% ~01m 59s      
   |++++++++++++                                      | 22% ~01m 58s      
   |++++++++++++                                      | 23% ~01m 57s      
   |+++++++++++++                                     | 24% ~01m 55s      
   |+++++++++++++                                     | 25% ~01m 54s      
   |++++++++++++++                                    | 26% ~01m 52s      
   |++++++++++++++                                    | 27% ~01m 50s      
   |+++++++++++++++                                   | 28% ~01m 49s      
   |+++++++++++++++                                   | 29% ~01m 47s      
   |++++++++++++++++                                  | 30% ~01m 46s      
   |++++++++++++++++                                  | 31% ~01m 44s      
   |+++++++++++++++++                                 | 32% ~01m 42s      
   |+++++++++++++++++                                 | 33% ~01m 41s      
   |++++++++++++++++++                                | 34% ~01m 39s      
   |++++++++++++++++++                                | 35% ~01m 38s      
   |+++++++++++++++++++                               | 36% ~01m 36s      
   |+++++++++++++++++++                               | 37% ~01m 35s      
   |++++++++++++++++++++                              | 38% ~01m 33s      
   |++++++++++++++++++++                              | 39% ~01m 32s      
   |+++++++++++++++++++++                             | 40% ~01m 31s      
   |+++++++++++++++++++++                             | 41% ~01m 30s      
   |++++++++++++++++++++++                            | 42% ~01m 28s      
   |++++++++++++++++++++++                            | 43% ~01m 26s      
   |+++++++++++++++++++++++                           | 44% ~01m 25s      
   |+++++++++++++++++++++++                           | 45% ~01m 23s      
   |++++++++++++++++++++++++                          | 46% ~01m 22s      
   |++++++++++++++++++++++++                          | 47% ~01m 20s      
   |+++++++++++++++++++++++++                         | 48% ~01m 18s      
   |+++++++++++++++++++++++++                         | 49% ~01m 17s      
   |++++++++++++++++++++++++++                        | 51% ~01m 15s      
   |++++++++++++++++++++++++++                        | 52% ~01m 14s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 12s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 11s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 09s      
   |++++++++++++++++++++++++++++                      | 56% ~01m 07s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 06s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 04s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 03s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 01s      
   |+++++++++++++++++++++++++++++++                   | 61% ~60s          
   |+++++++++++++++++++++++++++++++                   | 62% ~58s          
   |++++++++++++++++++++++++++++++++                  | 63% ~57s          
   |++++++++++++++++++++++++++++++++                  | 64% ~55s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~54s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~52s          
   |++++++++++++++++++++++++++++++++++                | 67% ~51s          
   |++++++++++++++++++++++++++++++++++                | 68% ~49s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~47s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~46s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~45s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~43s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~41s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~40s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~38s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~37s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~35s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~34s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~32s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~31s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~29s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~28s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~26s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~23s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~21s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 31s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 04s      
   |+                                                 | 2 % ~02m 02s      
   |++                                                | 3 % ~01m 60s      
   |++                                                | 4 % ~01m 58s      
   |+++                                               | 5 % ~01m 58s      
   |+++                                               | 6 % ~01m 60s      
   |++++                                              | 7 % ~01m 58s      
   |++++                                              | 8 % ~01m 56s      
   |+++++                                             | 9 % ~01m 55s      
   |+++++                                             | 10% ~01m 53s      
   |++++++                                            | 11% ~01m 52s      
   |++++++                                            | 12% ~01m 51s      
   |+++++++                                           | 13% ~01m 54s      
   |+++++++                                           | 14% ~01m 52s      
   |++++++++                                          | 15% ~01m 50s      
   |++++++++                                          | 16% ~01m 49s      
   |+++++++++                                         | 17% ~01m 48s      
   |+++++++++                                         | 18% ~01m 48s      
   |++++++++++                                        | 19% ~01m 46s      
   |++++++++++                                        | 20% ~01m 45s      
   |+++++++++++                                       | 21% ~01m 44s      
   |+++++++++++                                       | 22% ~01m 42s      
   |++++++++++++                                      | 23% ~01m 41s      
   |++++++++++++                                      | 24% ~01m 39s      
   |+++++++++++++                                     | 25% ~01m 38s      
   |+++++++++++++                                     | 26% ~01m 36s      
   |++++++++++++++                                    | 27% ~01m 34s      
   |++++++++++++++                                    | 28% ~01m 33s      
   |+++++++++++++++                                   | 29% ~01m 31s      
   |+++++++++++++++                                   | 30% ~01m 30s      
   |++++++++++++++++                                  | 31% ~01m 28s      
   |++++++++++++++++                                  | 32% ~01m 27s      
   |+++++++++++++++++                                 | 33% ~01m 26s      
   |+++++++++++++++++                                | 34% ~01m 24s      
   |++++++++++++++++++                                | 35% ~01m 23s      
   |++++++++++++++++++                                | 36% ~01m 21s      
   |+++++++++++++++++++                               | 37% ~01m 20s      
   |+++++++++++++++++++                               | 38% ~01m 19s      
   |++++++++++++++++++++                              | 39% ~01m 17s      
   |++++++++++++++++++++                              | 40% ~01m 16s      
   |+++++++++++++++++++++                             | 41% ~01m 15s      
   |+++++++++++++++++++++                             | 42% ~01m 13s      
   |++++++++++++++++++++++                            | 43% ~01m 12s      
   |++++++++++++++++++++++                            | 44% ~01m 11s      
   |+++++++++++++++++++++++                           | 45% ~01m 10s      
   |+++++++++++++++++++++++                           | 46% ~01m 08s      
   |++++++++++++++++++++++++                          | 47% ~01m 07s      
   |++++++++++++++++++++++++                          | 48% ~01m 06s      
   |+++++++++++++++++++++++++                         | 49% ~01m 04s      
   |+++++++++++++++++++++++++                         | 50% ~01m 03s      
   |++++++++++++++++++++++++++                        | 51% ~01m 02s      
   |++++++++++++++++++++++++++                        | 52% ~01m 00s      
   |+++++++++++++++++++++++++++                       | 53% ~59s          
   |+++++++++++++++++++++++++++                       | 54% ~58s          
   |++++++++++++++++++++++++++++                      | 55% ~57s          
   |++++++++++++++++++++++++++++                     | 56% ~55s          
   |+++++++++++++++++++++++++++++                     | 57% ~54s          
   |+++++++++++++++++++++++++++++                     | 58% ~53s          
   |++++++++++++++++++++++++++++++                    | 59% ~52s          
   |++++++++++++++++++++++++++++++                    | 60% ~51s          
   |+++++++++++++++++++++++++++++++                   | 61% ~49s          
   |+++++++++++++++++++++++++++++++                   | 62% ~48s          
   |++++++++++++++++++++++++++++++++                  | 63% ~47s          
   |++++++++++++++++++++++++++++++++                  | 64% ~45s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~44s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~43s          
   |++++++++++++++++++++++++++++++++++                | 67% ~41s          
   |++++++++++++++++++++++++++++++++++               | 68% ~40s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~39s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~38s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~36s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~35s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~34s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~33s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~31s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~30s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~29s          
   |+++++++++++++++++++++++++++++++++++++++          | 78% ~27s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~26s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~24s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~23s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~21s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++    | 90% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 05s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 43s      
   |++                                                | 2 % ~01m 41s      
   |++                                                | 3 % ~01m 39s      
   |+++                                               | 4 % ~01m 37s      
   |+++                                               | 5 % ~01m 36s      
   |++++                                              | 6 % ~01m 35s      
   |++++                                              | 7 % ~01m 34s      
   |+++++                                             | 8 % ~01m 33s      
   |+++++                                             | 9 % ~01m 32s      
   |++++++                                            | 10% ~01m 30s      
   |++++++                                            | 11% ~01m 30s      
   |+++++++                                           | 12% ~01m 30s      
   |+++++++                                           | 13% ~01m 28s      
   |++++++++                                          | 14% ~01m 27s      
   |++++++++                                          | 15% ~01m 26s      
   |+++++++++                                         | 16% ~01m 25s      
   |+++++++++                                         | 17% ~01m 25s      
   |++++++++++                                        | 18% ~01m 23s      
   |++++++++++                                        | 19% ~01m 22s      
   |+++++++++++                                       | 20% ~01m 21s      
   |+++++++++++                                       | 21% ~01m 20s      
   |++++++++++++                                      | 22% ~01m 19s      
   |++++++++++++                                      | 23% ~01m 18s      
   |+++++++++++++                                     | 24% ~01m 17s      
   |+++++++++++++                                     | 26% ~01m 16s      
   |++++++++++++++                                    | 27% ~01m 15s      
   |++++++++++++++                                    | 28% ~01m 14s      
   |+++++++++++++++                                   | 29% ~01m 13s      
   |+++++++++++++++                                   | 30% ~01m 12s      
   |++++++++++++++++                                  | 31% ~01m 11s      
   |++++++++++++++++                                  | 32% ~01m 10s      
   |+++++++++++++++++                                 | 33% ~01m 09s      
   |+++++++++++++++++                                 | 34% ~01m 08s      
   |++++++++++++++++++                                | 35% ~01m 08s      
   |++++++++++++++++++                                | 36% ~01m 07s      
   |+++++++++++++++++++                               | 37% ~01m 05s      
   |+++++++++++++++++++                               | 38% ~01m 04s      
   |++++++++++++++++++++                              | 39% ~01m 03s      
   |++++++++++++++++++++                              | 40% ~01m 02s      
   |+++++++++++++++++++++                             | 41% ~01m 01s      
   |+++++++++++++++++++++                             | 42% ~01m 00s      
   |++++++++++++++++++++++                            | 43% ~60s          
   |++++++++++++++++++++++                            | 44% ~59s          
   |+++++++++++++++++++++++                           | 45% ~57s          
   |+++++++++++++++++++++++                           | 46% ~56s          
   |++++++++++++++++++++++++                          | 47% ~55s          
   |++++++++++++++++++++++++                          | 48% ~54s          
   |+++++++++++++++++++++++++                         | 49% ~53s          
   |+++++++++++++++++++++++++                         | 50% ~52s          
   |++++++++++++++++++++++++++                        | 51% ~51s          
   |+++++++++++++++++++++++++++                       | 52% ~50s          
   |+++++++++++++++++++++++++++                       | 53% ~49s          
   |++++++++++++++++++++++++++++                      | 54% ~48s          
   |++++++++++++++++++++++++++++                      | 55% ~47s          
   |+++++++++++++++++++++++++++++                     | 56% ~46s          
   |+++++++++++++++++++++++++++++                     | 57% ~45s          
   |++++++++++++++++++++++++++++++                    | 58% ~44s          
   |++++++++++++++++++++++++++++++                    | 59% ~43s          
   |+++++++++++++++++++++++++++++++                   | 60% ~41s          
   |+++++++++++++++++++++++++++++++                   | 61% ~40s          
   |++++++++++++++++++++++++++++++++                  | 62% ~39s          
   |++++++++++++++++++++++++++++++++                  | 63% ~38s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~37s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~36s          
   |++++++++++++++++++++++++++++++++++                | 66% ~35s          
   |++++++++++++++++++++++++++++++++++                | 67% ~34s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~33s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~32s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~31s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~30s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~29s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~27s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~26s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~25s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~24s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~23s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~22s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 43s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~03m 16s      
   |+                                                 | 2 % ~03m 21s      
   |++                                                | 3 % ~03m 19s      
   |++                                                | 4 % ~03m 16s      
   |+++                                               | 5 % ~03m 15s      
   |+++                                               | 6 % ~03m 13s      
   |++++                                              | 7 % ~03m 14s      
   |++++                                              | 8 % ~03m 13s      
   |+++++                                             | 9 % ~03m 11s      
   |+++++                                             | 10% ~03m 09s      
   |++++++                                            | 11% ~03m 08s      
   |++++++                                            | 12% ~03m 07s      
   |+++++++                                           | 13% ~03m 06s      
   |+++++++                                           | 14% ~03m 04s      
   |++++++++                                          | 15% ~03m 03s      
   |++++++++                                          | 16% ~03m 01s      
   |+++++++++                                         | 17% ~02m 60s      
   |+++++++++                                         | 18% ~02m 58s      
   |++++++++++                                        | 19% ~02m 56s      
   |++++++++++                                        | 20% ~02m 54s      
   |+++++++++++                                       | 21% ~02m 52s      
   |+++++++++++                                       | 22% ~02m 50s      
   |++++++++++++                                      | 23% ~02m 47s      
   |++++++++++++                                      | 24% ~02m 45s      
   |+++++++++++++                                     | 25% ~02m 44s      
   |+++++++++++++                                     | 26% ~02m 41s      
   |++++++++++++++                                    | 27% ~02m 39s      
   |++++++++++++++                                    | 28% ~02m 36s      
   |+++++++++++++++                                   | 29% ~02m 34s      
   |+++++++++++++++                                   | 30% ~02m 31s      
   |++++++++++++++++                                  | 31% ~02m 29s      
   |++++++++++++++++                                  | 32% ~02m 27s      
   |+++++++++++++++++                                 | 33% ~02m 24s      
   |+++++++++++++++++                                | 34% ~02m 22s      
   |++++++++++++++++++                                | 35% ~02m 20s      
   |++++++++++++++++++                                | 36% ~02m 18s      
   |+++++++++++++++++++                               | 37% ~02m 16s      
   |+++++++++++++++++++                               | 38% ~02m 14s      
   |++++++++++++++++++++                              | 39% ~02m 12s      
   |++++++++++++++++++++                              | 40% ~02m 09s      
   |+++++++++++++++++++++                             | 41% ~02m 07s      
   |+++++++++++++++++++++                             | 42% ~02m 05s      
   |++++++++++++++++++++++                            | 43% ~02m 03s      
   |++++++++++++++++++++++                            | 44% ~02m 01s      
   |+++++++++++++++++++++++                           | 45% ~01m 58s      
   |+++++++++++++++++++++++                           | 46% ~01m 56s      
   |++++++++++++++++++++++++                          | 47% ~01m 55s      
   |++++++++++++++++++++++++                          | 48% ~01m 52s      
   |+++++++++++++++++++++++++                         | 49% ~01m 50s      
   |+++++++++++++++++++++++++                         | 50% ~01m 48s      
   |++++++++++++++++++++++++++                        | 51% ~01m 46s      
   |++++++++++++++++++++++++++                        | 52% ~01m 43s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 41s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 39s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 37s      
   |++++++++++++++++++++++++++++                     | 56% ~01m 35s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 33s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 30s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 28s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 26s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 24s      
   |+++++++++++++++++++++++++++++++                   | 62% ~01m 22s      
   |++++++++++++++++++++++++++++++++                  | 63% ~01m 19s      
   |++++++++++++++++++++++++++++++++                  | 64% ~01m 17s      
   |+++++++++++++++++++++++++++++++++                 | 65% ~01m 15s      
   |+++++++++++++++++++++++++++++++++                 | 66% ~01m 13s      
   |++++++++++++++++++++++++++++++++++                | 67% ~01m 11s      
   |++++++++++++++++++++++++++++++++++               | 68% ~01m 09s      
   |+++++++++++++++++++++++++++++++++++               | 69% ~01m 06s      
   |+++++++++++++++++++++++++++++++++++               | 70% ~01m 04s      
   |++++++++++++++++++++++++++++++++++++              | 71% ~01m 02s      
   |++++++++++++++++++++++++++++++++++++              | 72% ~60s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~58s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~56s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~54s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~52s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~49s          
   |+++++++++++++++++++++++++++++++++++++++          | 78% ~47s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~45s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~43s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~41s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~38s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~36s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~34s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~32s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~30s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~28s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~26s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~23s          
   |+++++++++++++++++++++++++++++++++++++++++++++    | 90% ~21s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 03m 30s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 55s      
   |++                                                | 2 % ~01m 54s      
   |++                                                | 3 % ~01m 53s      
   |+++                                               | 4 % ~01m 53s      
   |+++                                               | 5 % ~01m 51s      
   |++++                                              | 6 % ~01m 50s      
   |++++                                              | 7 % ~01m 49s      
   |+++++                                             | 8 % ~01m 47s      
   |+++++                                             | 9 % ~01m 47s      
   |++++++                                            | 10% ~01m 45s      
   |++++++                                            | 11% ~01m 44s      
   |+++++++                                           | 12% ~01m 43s      
   |+++++++                                           | 13% ~01m 43s      
   |++++++++                                          | 14% ~01m 43s      
   |++++++++                                          | 15% ~01m 42s      
   |+++++++++                                         | 16% ~01m 41s      
   |+++++++++                                         | 17% ~01m 39s      
   |++++++++++                                        | 18% ~01m 38s      
   |++++++++++                                        | 19% ~01m 37s      
   |+++++++++++                                       | 20% ~01m 36s      
   |+++++++++++                                       | 21% ~01m 34s      
   |++++++++++++                                      | 22% ~01m 33s      
   |++++++++++++                                      | 23% ~01m 32s      
   |+++++++++++++                                     | 24% ~01m 31s      
   |+++++++++++++                                     | 25% ~01m 30s      
   |++++++++++++++                                    | 26% ~01m 28s      
   |++++++++++++++                                    | 27% ~01m 27s      
   |+++++++++++++++                                   | 28% ~01m 26s      
   |+++++++++++++++                                   | 29% ~01m 25s      
   |++++++++++++++++                                  | 30% ~01m 24s      
   |++++++++++++++++                                  | 31% ~01m 22s      
   |+++++++++++++++++                                 | 32% ~01m 21s      
   |+++++++++++++++++                                 | 33% ~01m 21s      
   |++++++++++++++++++                                | 34% ~01m 19s      
   |++++++++++++++++++                                | 35% ~01m 18s      
   |+++++++++++++++++++                               | 36% ~01m 17s      
   |+++++++++++++++++++                               | 37% ~01m 16s      
   |++++++++++++++++++++                              | 38% ~01m 15s      
   |++++++++++++++++++++                              | 39% ~01m 13s      
   |+++++++++++++++++++++                             | 40% ~01m 12s      
   |+++++++++++++++++++++                             | 41% ~01m 11s      
   |++++++++++++++++++++++                            | 42% ~01m 10s      
   |++++++++++++++++++++++                            | 43% ~01m 08s      
   |+++++++++++++++++++++++                           | 44% ~01m 07s      
   |+++++++++++++++++++++++                           | 45% ~01m 06s      
   |++++++++++++++++++++++++                          | 46% ~01m 05s      
   |++++++++++++++++++++++++                          | 47% ~01m 04s      
   |+++++++++++++++++++++++++                         | 48% ~01m 03s      
   |+++++++++++++++++++++++++                         | 49% ~01m 02s      
   |++++++++++++++++++++++++++                        | 51% ~01m 00s      
   |++++++++++++++++++++++++++                        | 52% ~59s          
   |+++++++++++++++++++++++++++                       | 53% ~58s          
   |+++++++++++++++++++++++++++                       | 54% ~57s          
   |++++++++++++++++++++++++++++                      | 55% ~55s          
   |++++++++++++++++++++++++++++                      | 56% ~54s          
   |+++++++++++++++++++++++++++++                     | 57% ~53s          
   |+++++++++++++++++++++++++++++                     | 58% ~52s          
   |++++++++++++++++++++++++++++++                    | 59% ~50s          
   |++++++++++++++++++++++++++++++                    | 60% ~49s          
   |+++++++++++++++++++++++++++++++                   | 61% ~48s          
   |+++++++++++++++++++++++++++++++                   | 62% ~47s          
   |++++++++++++++++++++++++++++++++                  | 63% ~46s          
   |++++++++++++++++++++++++++++++++                  | 64% ~44s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~43s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~42s          
   |++++++++++++++++++++++++++++++++++                | 67% ~41s          
   |++++++++++++++++++++++++++++++++++                | 68% ~39s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~38s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~37s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~36s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~34s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~33s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~32s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~31s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~29s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~28s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~27s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~26s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~23s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~22s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~21s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~17s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 01s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~03m 12s      
   |++                                                | 2 % ~03m 07s      
   |++                                                | 3 % ~03m 06s      
   |+++                                               | 4 % ~03m 02s      
   |+++                                               | 5 % ~02m 60s      
   |++++                                              | 6 % ~02m 58s      
   |++++                                              | 7 % ~02m 55s      
   |+++++                                             | 8 % ~02m 53s      
   |+++++                                             | 9 % ~02m 51s      
   |++++++                                            | 10% ~02m 50s      
   |++++++                                            | 11% ~02m 48s      
   |+++++++                                           | 12% ~02m 46s      
   |+++++++                                           | 13% ~02m 44s      
   |++++++++                                          | 14% ~02m 42s      
   |++++++++                                          | 15% ~02m 40s      
   |+++++++++                                         | 16% ~02m 41s      
   |+++++++++                                         | 17% ~02m 39s      
   |++++++++++                                        | 18% ~02m 36s      
   |++++++++++                                        | 19% ~02m 34s      
   |+++++++++++                                       | 20% ~02m 33s      
   |+++++++++++                                       | 21% ~02m 31s      
   |++++++++++++                                      | 22% ~02m 29s      
   |++++++++++++                                      | 23% ~02m 27s      
   |+++++++++++++                                     | 24% ~02m 25s      
   |+++++++++++++                                     | 25% ~02m 23s      
   |++++++++++++++                                    | 26% ~02m 21s      
   |++++++++++++++                                    | 27% ~02m 19s      
   |+++++++++++++++                                   | 28% ~02m 17s      
   |+++++++++++++++                                   | 29% ~02m 15s      
   |++++++++++++++++                                  | 30% ~02m 13s      
   |++++++++++++++++                                  | 31% ~02m 12s      
   |+++++++++++++++++                                 | 32% ~02m 10s      
   |+++++++++++++++++                                 | 33% ~02m 08s      
   |++++++++++++++++++                                | 34% ~02m 06s      
   |++++++++++++++++++                                | 35% ~02m 04s      
   |+++++++++++++++++++                               | 36% ~02m 02s      
   |+++++++++++++++++++                               | 37% ~02m 00s      
   |++++++++++++++++++++                              | 38% ~01m 58s      
   |++++++++++++++++++++                              | 39% ~01m 57s      
   |+++++++++++++++++++++                             | 40% ~01m 55s      
   |+++++++++++++++++++++                             | 41% ~01m 53s      
   |++++++++++++++++++++++                            | 42% ~01m 51s      
   |++++++++++++++++++++++                            | 43% ~01m 49s      
   |+++++++++++++++++++++++                           | 44% ~01m 47s      
   |+++++++++++++++++++++++                           | 45% ~01m 45s      
   |++++++++++++++++++++++++                          | 46% ~01m 44s      
   |++++++++++++++++++++++++                          | 47% ~01m 42s      
   |+++++++++++++++++++++++++                         | 48% ~01m 40s      
   |+++++++++++++++++++++++++                         | 49% ~01m 38s      
   |++++++++++++++++++++++++++                        | 51% ~01m 36s      
   |++++++++++++++++++++++++++                        | 52% ~01m 34s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 32s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 30s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 28s      
   |++++++++++++++++++++++++++++                      | 56% ~01m 26s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 24s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 22s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 20s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 18s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 16s      
   |+++++++++++++++++++++++++++++++                   | 62% ~01m 14s      
   |++++++++++++++++++++++++++++++++                  | 63% ~01m 12s      
   |++++++++++++++++++++++++++++++++                  | 64% ~01m 10s      
   |+++++++++++++++++++++++++++++++++                 | 65% ~01m 08s      
   |+++++++++++++++++++++++++++++++++                 | 66% ~01m 07s      
   |++++++++++++++++++++++++++++++++++                | 67% ~01m 05s      
   |++++++++++++++++++++++++++++++++++                | 68% ~01m 03s      
   |+++++++++++++++++++++++++++++++++++               | 69% ~01m 01s      
   |+++++++++++++++++++++++++++++++++++               | 70% ~59s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~57s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~55s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~53s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~51s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~49s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~47s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~45s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~44s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~42s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~40s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~38s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~36s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~34s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~32s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~30s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~28s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~26s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~24s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~22s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 03m 15s

Display the top markers you computed above.

tiss.markers %>% group_by(cluster) %>% top_n(20, avg_logFC)

Generate an expression heatmap for given cells and genes. In this case, we are plotting the top 20 markers (or all markers if less than 20) for each cluster.

Assigning cell type identity to clusters

At a coarse level, we can use canonical markers to match the unbiased clustering to known cell types:

0: basal cell of epidermis (CL:0002187) 1: basal cell of epidermis (CL:0002187) 2: proliferating basal cell of epidermis (CL:0002187) 3: differentiated keratinocytes (CL:0000312) 4: differentiating basal cell of epidermis (CL:0002187) 5: suprabasal differentiating keratinocytes (CL:0000312) 6: basal cell of epidermis (CL:0002187) 7: filiform differentiated keratinocytes (CL:0000312)

# stash current cluster IDs
tiss <- StashIdent(object = tiss, save.name = "cluster.ids")
# enumerate current cluster IDs and the labels for them
cluster.ids <- c(0, 1, 2, 3, 4, 5, 6, 7)
free_annotation <- c(
"basal cells", 
"basal cells", 
"proliferating", 
"differentiated keratinocyte", 
"differentiating basal cells", 
"suprabasal differentiating keratinocytes", 
"basal cells",
"filiform differentiated keratinocytes" 
)
cell_ontology_class <- c(
  "basal cell of epidermis", 
  "basal cell of epidermis", 
  "basal cell of epidermis", 
  "keratinocyte",
  "basal cell of epidermis",
  "keratinocyte",
  "basal cell of epidermis",
  "keratinocyte"
)
validate_cell_ontology(cell_ontology_class)
cell_ontology_id = convert_to_cell_ontology_id(cell_ontology_class)
tiss@meta.data[,'free_annotation'] <- plyr::mapvalues(x = tiss@ident, from = cluster.ids, to = free_annotation)
tiss@meta.data[,'cell_ontology_class'] <- plyr::mapvalues(x = tiss@ident, from = cluster.ids, to = cell_ontology_class)
tiss@meta.data[,'cell_ontology_id'] <- plyr::mapvalues(x = tiss@ident, from = cluster.ids, to = cell_ontology_id)
tiss@meta.data[tiss@cell.names,'free_annotation'] <- as.character(tiss@meta.data$free_annotation)
tiss@meta.data[tiss@cell.names,'cell_ontology_class'] <- as.character(tiss@meta.data$cell_ontology_class)
tiss@meta.data[tiss@cell.names,'cell_ontology_id'] <- as.character(tiss@meta.data$cell_ontology_id)
TSNEPlot(object = tiss, do.label = TRUE, pt.size = 0.5, group.by='cell_ontology_class')

Checking for batch effects

Color by metadata, like plate barcode, to check for batch effects.

TSNEPlot(object = tiss, do.return = TRUE, group.by = "mouse.sex")

Print a table showing the count of cells in each identity category from each plate.

table(as.character(tiss@ident), as.character(tiss@meta.data$plate.barcode))
   
    B002777 B002780 D041894 D041904 D041911
  0      61      58      90      79      80
  1      46      12      67      56      72
  2      85      24      28      45      14
  3      40      19      38      46      39
  4      20       8      44      48      41
  5      10       5      35      34      37
  6       1       7      29      14      57
  7       3       3       7      11       3

Save the Robject for later

When you save the annotated tissue, please give it a name.

filename = here('00_data_ingest', '04_tissue_robj_generated', 
                     paste0("facs", tissue_of_interest, "_seurat_tiss.Robj"))
print(filename)
[1] "/Users/olgabot/code/tabula-muris/00_data_ingest/04_tissue_robj_generated/facsTongue_seurat_tiss.Robj"
save(tiss, file=filename)
# To reload a saved object
filename = here('00_data_ingest', '04_tissue_robj_generated', 
                      paste0("facs", tissue_of_interest, "_seurat_tiss.Robj"))
load(file=filename)

Export the final metadata

So that Biohub can easily combine all your cell_ontology_classs, please export them as a simple csv.

head(tiss@meta.data)
filename = here('00_data_ingest', '03_tissue_annotation_csv', 
          paste0(tissue_of_interest, "_facs_cell_ontology_class.csv"))
write.csv(FetchData(tiss, c('plate.barcode','cell_ontology_class','cell_ontology_id', 'free_annotation', 'tSNE_1', 'tSNE_2')), file=filename)
sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] bindrcpp_0.2      ontologyIndex_2.4 dplyr_0.7.4       useful_1.2.3     
[5] here_0.1          Seurat_2.2.1      cowplot_0.8.0     ggplot2_2.2.1    
[9] Matrix_1.2-10    

loaded via a namespace (and not attached):
  [1] diffusionMap_1.1-0   Rtsne_0.13           VGAM_1.0-4           colorspace_1.3-2    
  [5] class_7.3-14         modeltools_0.2-21    ggridges_0.4.1       rprojroot_1.2       
  [9] mclust_5.3           htmlTable_1.9        base64enc_0.1-3      proxy_0.4-17        
 [13] DRR_0.0.2            flexmix_2.3-14       prodlim_1.6.1        mvtnorm_1.0-6       
 [17] lubridate_1.7.1      ranger_0.8.0         codetools_0.2-15     splines_3.4.1       
 [21] R.methodsS3_1.7.1    mnormt_1.5-5         robustbase_0.92-7    knitr_1.17          
 [25] RcppRoll_0.2.2       tclust_1.3-1         jsonlite_1.5         Formula_1.2-2       
 [29] caret_6.0-77         ica_1.0-1            ddalpha_1.3.1        cluster_2.0.6       
 [33] kernlab_0.9-25       R.oo_1.21.0          sfsmisc_1.1-1        compiler_3.4.1      
 [37] backports_1.1.1      assertthat_0.2.0     lazyeval_0.2.0       lars_1.2            
 [41] acepack_1.4.1        htmltools_0.3.6      tools_3.4.1          igraph_1.1.2        
 [45] gtable_0.2.0         glue_1.1.1           reshape2_1.4.2       Rcpp_0.12.13        
 [49] trimcluster_0.1-2    gdata_2.18.0         ape_4.1              nlme_3.1-131        
 [53] iterators_1.0.8      fpc_2.1-10           timeDate_3012.100    gower_0.1.2         
 [57] stringr_1.2.0        irlba_2.2.1          gtools_3.5.0         DEoptimR_1.0-8      
 [61] MASS_7.3-47          scales_0.5.0         ipred_0.9-6          parallel_3.4.1      
 [65] RColorBrewer_1.1-2   yaml_2.1.14          pbapply_1.3-3        gridExtra_2.3       
 [69] rpart_4.1-11         segmented_0.5-2.2    latticeExtra_0.6-28  stringi_1.1.5       
 [73] foreach_1.4.3        checkmate_1.8.4      caTools_1.17.1       lava_1.5.1          
 [77] SDMTools_1.1-221     rlang_0.1.4          pkgconfig_2.0.1      dtw_1.18-1          
 [81] prabclus_2.2-6       bitops_1.0-6         evaluate_0.10.1      lattice_0.20-35     
 [85] ROCR_1.0-7           purrr_0.2.4          bindr_0.1            labeling_0.3        
 [89] recipes_0.1.0        htmlwidgets_0.9      tidyselect_0.2.0     CVST_0.2-1          
 [93] plyr_1.8.4           magrittr_1.5         R6_2.2.2             gplots_3.0.1        
 [97] Hmisc_4.0-3          dimRed_0.1.0         foreign_0.8-69       withr_2.0.0         
[101] sn_1.5-0             mixtools_1.1.0       survival_2.41-3      scatterplot3d_0.3-40
[105] nnet_7.3-12          tsne_0.1-3           tibble_1.3.4         KernSmooth_2.23-15  
[109] rmarkdown_1.6        grid_3.4.1           data.table_1.10.4    FNN_1.1             
[113] ModelMetrics_1.1.0   metap_0.8            digest_0.6.12        diptest_0.75-7      
[117] tidyr_0.7.2          numDeriv_2016.8-1    R.utils_2.5.0        stats4_3.4.1        
[121] munsell_0.4.3       
LS0tCnRpdGxlOiAiVG9uZ3VlIEZBQ1MgTm90ZWJvb2siCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCkVudGVyIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIG1hY2EgZm9sZGVyIG9uIHlvdXIgZHJpdmUgYW5kIHRoZSBuYW1lIG9mIHRoZSB0aXNzdWUgeW91IHdhbnQgdG8gYW5hbHl6ZS4KCmBgYHtyfQp0aXNzdWVfb2ZfaW50ZXJlc3QgPSAiVG9uZ3VlIgpsaWJyYXJ5KGhlcmUpCnNvdXJjZShoZXJlKCIwMF9kYXRhX2luZ2VzdCIsICIwMl90aXNzdWVfYW5hbHlzaXNfcm1kIiwgImJvaWxlcnBsYXRlLlIiKSkKdGlzcyA9IGxvYWRfdGlzc3VlX2ZhY3ModGlzc3VlX29mX2ludGVyZXN0KQpgYGAKCgpgYGB7ciwgZWNobz1GQUxTRSwgZmlnLmhlaWdodD0xNiwgZmlnLndpZHRoPTh9ClBDSGVhdG1hcChvYmplY3QgPSB0aXNzLCBwYy51c2UgPSAxOjEwLCBjZWxscy51c2UgPSA1MDAsIGRvLmJhbGFuY2VkID0gVFJVRSwgCiAgICBsYWJlbC5jb2x1bW5zID0gRkFMU0UsIHVzZS5mdWxsID0gRkFMU0UpCmBgYAoKTGF0ZXIgb24gKGluIEZpbmRDbHVzdGVycyBhbmQgVFNORSkgeW91IHdpbGwgcGljayBhIG51bWJlciBvZiBwcmluY2lwYWwgY29tcG9uZW50cyB0byB1c2UuIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2Yga2VlcGluZyB0aGUgbWFqb3IgZGlyZWN0aW9ucyBvZiB2YXJpYXRpb24gaW4gdGhlIGRhdGEgYW5kLCBpZGVhbGx5LCBzdXByZXNzaW5nIG5vaXNlLiBUaGVyZSBpcyBubyBjb3JyZWN0IGFuc3dlciB0byB0aGUgbnVtYmVyIHRvIHVzZSwgYnV0IGEgZGVjZW50IHJ1bGUgb2YgdGh1bWIgaXMgdG8gZ28gdW50aWwgdGhlIHBsb3QgcGxhdGVhdXMuCgpgYGB7cn0KUENFbGJvd1Bsb3Qob2JqZWN0ID0gdGlzcykKYGBgCgpDaG9vc2UgdGhlIG51bWJlciBvZiBwcmluY2lwYWwgY29tcG9uZW50cyB0byB1c2UuCmBgYHtyfQojIFNldCBudW1iZXIgb2YgcHJpbmNpcGFsIGNvbXBvbmVudHMuIApuLnBjcyA9IDEwCmBgYAoKClRoZSBjbHVzdGVyaW5nIGlzIHBlcmZvcm1lZCBiYXNlZCBvbiBhIG5lYXJlc3QgbmVpZ2hib3JzIGdyYXBoLiBDZWxscyB0aGF0IGhhdmUgc2ltaWxhciBleHByZXNzaW9uIHdpbGwgYmUgam9pbmVkIHRvZ2V0aGVyLiBUaGUgTG91dmFpbiBhbGdvcml0aG0gbG9va3MgZm9yIGdyb3VwcyBvZiBjZWxscyB3aXRoIGhpZ2ggbW9kdWxhcml0eS0tbW9yZSBjb25uZWN0aW9ucyB3aXRoaW4gdGhlIGdyb3VwIHRoYW4gYmV0d2VlbiBncm91cHMuIFRoZSByZXNvbHV0aW9uIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBzY2FsZS4uLmhpZ2hlciByZXNvbHV0aW9uIHdpbGwgZ2l2ZSBtb3JlIGNsdXN0ZXJzLCBsb3dlciByZXNvbHV0aW9uIHdpbGwgZ2l2ZSBmZXdlci4KCkZvciB0aGUgdG9wLWxldmVsIGNsdXN0ZXJpbmcsIGFpbSB0byB1bmRlci1jbHVzdGVyIGluc3RlYWQgb2Ygb3Zlci1jbHVzdGVyLiBJdCB3aWxsIGJlIGVhc3kgdG8gc3Vic2V0IGdyb3VwcyBhbmQgZnVydGhlciBhbmFseXplIHRoZW0gYmVsb3cuCgpgYGB7cn0KIyBTZXQgcmVzb2x1dGlvbiAKcmVzLnVzZWQgPC0gMC43Cgp0aXNzIDwtIEZpbmRDbHVzdGVycyhvYmplY3QgPSB0aXNzLCByZWR1Y3Rpb24udHlwZSA9ICJwY2EiLCBkaW1zLnVzZSA9IDE6bi5wY3MsIAogICAgcmVzb2x1dGlvbiA9IHJlcy51c2VkLCBwcmludC5vdXRwdXQgPSAwLCBzYXZlLlNOTiA9IFRSVUUsIGZvcmNlLnJlY2FsYyA9IFRSVUUpCmBgYAoKVG8gdmlzdWFsaXplIApgYGB7cn0KIyBJZiBjZWxscyBhcmUgdG9vIHNwcmVhZCBvdXQsIHlvdSBjYW4gcmFpc2UgdGhlIHBlcnBsZXhpdHkuIElmIHlvdSBoYXZlIGZldyBjZWxscywgdHJ5IGEgbG93ZXIgcGVycGxleGl0eSAoYnV0IG5ldmVyIGxlc3MgdGhhbiAxMCkuCnRpc3MgPC0gUnVuVFNORShvYmplY3QgPSB0aXNzLCBkaW1zLnVzZSA9IDE6bi5wY3MsIHNlZWQudXNlID0gMjAsIHBlcnBsZXhpdHk9MzApCiMgbm90ZSB0aGF0IHlvdSBjYW4gc2V0IGRvLmxhYmVsPVQgdG8gaGVscCBsYWJlbCBpbmRpdmlkdWFsIGNsdXN0ZXJzClRTTkVQbG90KG9iamVjdCA9IHRpc3MsIGRvLmxhYmVsID0gVCwgcHQuc2l6ZSA9IDEuMiwgbGFiZWwuc2l6ZSA9IDQpCgpgYGAKCgpDaGVjayBleHByZXNzaW9uIG9mIGdlbmVzIG9mIGludGVyc2V0LgoKYGBge3IsIGVjaG89RkFMU0UsIGZpZy5oZWlnaHQ9MTYsIGZpZy53aWR0aD0xMH0KZ2VuZXNfdG9fY2hlY2sgPSBjKCdJdGdiNCcsICdJdGdhNicsICdJdGdiMScsICdDZGgzJywgJ1RvcDJhJywgJ010MicsICdLcnQxNScsICdLcnQ1JywgJ0tydDE0JywgJ1Nic24nLCAnS3J0MTAnLCdLbGY0JwosICdLcnQ4NCcsICdLcnQzNicsICdIb3hjMTMnLCAnS3J0NCcsICdLcnQxMycsICdGYWJwNScsICdLcnQzMicsICAnS3J0NzgnLCAnVmltJywgJ0hoaXAnLCAnUHRjaDEnLCAnR2xpMScsJ0RzYzEnLCAnRGNuJywgJ1J1bngyJywgJ1NveDInLCAnUGF4OScpCgpGZWF0dXJlUGxvdCh0aXNzLCBnZW5lc190b19jaGVjaywgcHQuc2l6ZSA9IDEuMiwgbkNvbCA9IDQpCmBgYAoKRG90cGxvdHMgbGV0IHlvdSBzZWUgdGhlIGludGVuc2l0eSBvZiBleHBwcmVzc2lvbiBhbmQgdGhlIGZyYWN0aW9uIG9mIGNlbGxzIGV4cHJlc3NpbmcgZm9yIGVhY2ggb2YgeW91ciBnZW5lcyBvZiBpbnRlcmVzdC4KCmBgYHtyLCBlY2hvPUZBTFNFLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD0yMH0KIyBUbyBjaGFuZ2UgdGhlIHktYXhpcyB0byBzaG93IHJhdyBjb3VudHMsIGFkZCB1c2UucmF3ID0gVC4KRG90UGxvdCh0aXNzLCBnZW5lc190b19jaGVjaywgcGxvdC5sZWdlbmQgPSBUKQpgYGAKCkhvdyBiaWcgYXJlIHRoZSBjbHVzdGVycz8KYGBge3J9CnRhYmxlKHRpc3NAaWRlbnQpCmBgYAoKYGBge3J9CnRpc3MxPUJ1aWxkQ2x1c3RlclRyZWUodGlzcykKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgZmlnLmhlaWdodD0yMCwgZmlnLndpZHRoPTIwfQojIFRvIGNoYW5nZSB0aGUgeS1heGlzIHRvIHNob3cgcmF3IGNvdW50cywgYWRkIHVzZS5yYXcgPSBULgpWbG5QbG90KHRpc3MsIGdlbmVzX3RvX2NoZWNrKQpgYGAKCldoaWNoIG1hcmtlcnMgaWRlbnRpZnkgYSBzcGVjaWZpYyBjbHVzdGVyPwoKYGBge3J9CiNjbHVzdGVyMS5tYXJrZXJzIDwtIEZpbmRNYXJrZXJzKG9iamVjdCA9IHRpc3MsIGlkZW50LjEgPSAxLCBtaW4ucGN0ID0gMC4yNSwgb25seS5wb3MgPSBUUlVFLCB0aHJlc2gudXNlID0gMC4yNSkKI2NsdXN0ZXIyLm1hcmtlcnMgPC0gRmluZE1hcmtlcnMob2JqZWN0ID0gdGlzcywgaWRlbnQuMSA9IDIsIG1pbi5wY3QgPSAwLjI1LCBvbmx5LnBvcyA9IFRSVUUsIHRocmVzaC51c2UgPSAwLjI1KQojY2x1c3RlcjMubWFya2VycyA8LSBGaW5kTWFya2VycyhvYmplY3QgPSB0aXNzLCBpZGVudC4xID0gMywgbWluLnBjdCA9IDAuMjUsIG9ubHkucG9zID0gVFJVRSwgdGhyZXNoLnVzZSA9IDAuMjUpCiNjbHVzdGVyNC5tYXJrZXJzIDwtIEZpbmRNYXJrZXJzKG9iamVjdCA9IHRpc3MsIGlkZW50LjEgPSA0LCBtaW4ucGN0ID0gMC4yNSwgb25seS5wb3MgPSBUUlVFLCB0aHJlc2gudXNlID0gMC4yNSkKI2NsdXN0ZXI1Lm1hcmtlcnMgPC0gRmluZE1hcmtlcnMob2JqZWN0ID0gdGlzcywgaWRlbnQuMSA9IDUsIG1pbi5wY3QgPSAwLjI1LCBvbmx5LnBvcyA9IFRSVUUsIHRocmVzaC51c2UgPSAwLjI1KQojY2x1c3RlcjYubWFya2VycyA8LSBGaW5kTWFya2VycyhvYmplY3QgPSB0aXNzLCBpZGVudC4xID0gNiwgbWluLnBjdCA9IDAuMjUsIG9ubHkucG9zID0gVFJVRSwgdGhyZXNoLnVzZSA9IDAuMjUpCmNsdXN0ZXI3Lm1hcmtlcnMgPC0gRmluZE1hcmtlcnMob2JqZWN0ID0gdGlzcywgaWRlbnQuMSA9IDYsIG1pbi5wY3QgPSAwLjI1LCBvbmx5LnBvcyA9IFRSVUUsIHRocmVzaC51c2UgPSAwLjI1KQojY2x1c3RlcjAubWFya2VycyA8LSBGaW5kTWFya2VycyhvYmplY3QgPSB0aXNzLCBpZGVudC4xID0gMCwgbWluLnBjdCA9IDAuMjUsIG9ubHkucG9zID0gVFJVRSwgdGhyZXNoLnVzZSA9IDAuMjUpCmBgYAoKYGBge3J9CnByaW50KHggPSBoZWFkKHggPSBjbHVzdGVyNi5tYXJrZXJzLCBuID0gMzApKQpgYGAKCllvdSBjYW4gYWxzbyBjb21wdXRlIGFsbCBtYXJrZXJzIGZvciBhbGwgY2x1c3RlcnMgYXQgb25jZS4gVGhpcyBtYXkgdGFrZSBzb21lIHRpbWUuCmBgYHtyfQp0aXNzLm1hcmtlcnMgPC0gRmluZEFsbE1hcmtlcnMob2JqZWN0ID0gdGlzcywgb25seS5wb3MgPSBUUlVFLCBtaW4ucGN0ID0gMC4yNSwgdGhyZXNoLnVzZSA9IDAuMjUpCmBgYAoKCkRpc3BsYXkgdGhlIHRvcCBtYXJrZXJzIHlvdSBjb21wdXRlZCBhYm92ZS4KYGBge3J9CnRpc3MubWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKDIwLCBhdmdfbG9nRkMpCmBgYAoKIyMgR2VuZXJhdGUgYW4gZXhwcmVzc2lvbiBoZWF0bWFwIGZvciBnaXZlbiBjZWxscyBhbmQgZ2VuZXMuIEluIHRoaXMgY2FzZSwgd2UgYXJlIHBsb3R0aW5nIHRoZSB0b3AgMjAgbWFya2VycyAob3IgYWxsIG1hcmtlcnMgaWYgbGVzcyB0aGFuIDIwKSBmb3IgZWFjaCBjbHVzdGVyLgoKYGBge3IsIGVjaG89RkFMU0UsIGZpZy5oZWlnaHQ9NTAsIGZpZy53aWR0aD0zNX0KI3RvcDEwIDwtIHRpc3MubWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKDEwLCBhdmdfbG9nRkMpCnRvcDIwIDwtIHRpc3MubWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKDIwLCBhdmdfbG9nRkMpCiMgc2V0dGluZyBzbGltLmNvbC5sYWJlbCB0byBUUlVFIHdpbGwgcHJpbnQganVzdCB0aGUgY2x1c3RlciBJRFMgaW5zdGVhZCBvZgojIGV2ZXJ5IGNlbGwgbmFtZQpEb0hlYXRtYXAodGlzcywgZ2VuZXMudXNlID0gdG9wMjAkZ2VuZSwgcmVtb3ZlLmtleSA9IFRSVUUsIGNleC5yb3cgPSAyMCwgZ3JvdXAuY2V4ID0gMjAgKQpgYGAKIyMgQXNzaWduaW5nIGNlbGwgdHlwZSBpZGVudGl0eSB0byBjbHVzdGVycwoKQXQgYSBjb2Fyc2UgbGV2ZWwsIHdlIGNhbiB1c2UgY2Fub25pY2FsIG1hcmtlcnMgdG8gbWF0Y2ggdGhlIHVuYmlhc2VkIGNsdXN0ZXJpbmcgdG8ga25vd24gY2VsbCB0eXBlczoKCjA6IGJhc2FsIGNlbGwgb2YgZXBpZGVybWlzIChDTDowMDAyMTg3KQoxOiBiYXNhbCBjZWxsIG9mIGVwaWRlcm1pcyAoQ0w6MDAwMjE4NykKMjogcHJvbGlmZXJhdGluZyBiYXNhbCBjZWxsIG9mIGVwaWRlcm1pcyAoQ0w6MDAwMjE4NykKMzogZGlmZmVyZW50aWF0ZWQga2VyYXRpbm9jeXRlcyAoQ0w6MDAwMDMxMikKNDogZGlmZmVyZW50aWF0aW5nIGJhc2FsIGNlbGwgb2YgZXBpZGVybWlzIChDTDowMDAyMTg3KQo1OiBzdXByYWJhc2FsIGRpZmZlcmVudGlhdGluZyBrZXJhdGlub2N5dGVzICAoQ0w6MDAwMDMxMikKNjogYmFzYWwgY2VsbCBvZiBlcGlkZXJtaXMgKENMOjAwMDIxODcpCjc6IGZpbGlmb3JtIGRpZmZlcmVudGlhdGVkIGtlcmF0aW5vY3l0ZXMgKENMOjAwMDAzMTIpCgpgYGB7cn0KIyBzdGFzaCBjdXJyZW50IGNsdXN0ZXIgSURzCnRpc3MgPC0gU3Rhc2hJZGVudChvYmplY3QgPSB0aXNzLCBzYXZlLm5hbWUgPSAiY2x1c3Rlci5pZHMiKQojIGVudW1lcmF0ZSBjdXJyZW50IGNsdXN0ZXIgSURzIGFuZCB0aGUgbGFiZWxzIGZvciB0aGVtCmNsdXN0ZXIuaWRzIDwtIGMoMCwgMSwgMiwgMywgNCwgNSwgNiwgNykKZnJlZV9hbm5vdGF0aW9uIDwtIGMoCiJiYXNhbCBjZWxscyIsIAoiYmFzYWwgY2VsbHMiLCAKInByb2xpZmVyYXRpbmciLCAKImRpZmZlcmVudGlhdGVkIGtlcmF0aW5vY3l0ZSIsIAoiZGlmZmVyZW50aWF0aW5nIGJhc2FsIGNlbGxzIiwgCiJzdXByYWJhc2FsIGRpZmZlcmVudGlhdGluZyBrZXJhdGlub2N5dGVzIiwgCiJiYXNhbCBjZWxscyIsCiJmaWxpZm9ybSBkaWZmZXJlbnRpYXRlZCBrZXJhdGlub2N5dGVzIiAKKQoKY2VsbF9vbnRvbG9neV9jbGFzcyA8LSBjKAogICJiYXNhbCBjZWxsIG9mIGVwaWRlcm1pcyIsIAogICJiYXNhbCBjZWxsIG9mIGVwaWRlcm1pcyIsIAogICJiYXNhbCBjZWxsIG9mIGVwaWRlcm1pcyIsIAogICJrZXJhdGlub2N5dGUiLAogICJiYXNhbCBjZWxsIG9mIGVwaWRlcm1pcyIsCiAgImtlcmF0aW5vY3l0ZSIsCiAgImJhc2FsIGNlbGwgb2YgZXBpZGVybWlzIiwKICAia2VyYXRpbm9jeXRlIgopCgp2YWxpZGF0ZV9jZWxsX29udG9sb2d5KGNlbGxfb250b2xvZ3lfY2xhc3MpCmNlbGxfb250b2xvZ3lfaWQgPSBjb252ZXJ0X3RvX2NlbGxfb250b2xvZ3lfaWQoY2VsbF9vbnRvbG9neV9jbGFzcykKCnRpc3NAbWV0YS5kYXRhWywnZnJlZV9hbm5vdGF0aW9uJ10gPC0gcGx5cjo6bWFwdmFsdWVzKHggPSB0aXNzQGlkZW50LCBmcm9tID0gY2x1c3Rlci5pZHMsIHRvID0gZnJlZV9hbm5vdGF0aW9uKQp0aXNzQG1ldGEuZGF0YVssJ2NlbGxfb250b2xvZ3lfY2xhc3MnXSA8LSBwbHlyOjptYXB2YWx1ZXMoeCA9IHRpc3NAaWRlbnQsIGZyb20gPSBjbHVzdGVyLmlkcywgdG8gPSBjZWxsX29udG9sb2d5X2NsYXNzKQp0aXNzQG1ldGEuZGF0YVssJ2NlbGxfb250b2xvZ3lfaWQnXSA8LSBwbHlyOjptYXB2YWx1ZXMoeCA9IHRpc3NAaWRlbnQsIGZyb20gPSBjbHVzdGVyLmlkcywgdG8gPSBjZWxsX29udG9sb2d5X2lkKQp0aXNzQG1ldGEuZGF0YVt0aXNzQGNlbGwubmFtZXMsJ2ZyZWVfYW5ub3RhdGlvbiddIDwtIGFzLmNoYXJhY3Rlcih0aXNzQG1ldGEuZGF0YSRmcmVlX2Fubm90YXRpb24pCnRpc3NAbWV0YS5kYXRhW3Rpc3NAY2VsbC5uYW1lcywnY2VsbF9vbnRvbG9neV9jbGFzcyddIDwtIGFzLmNoYXJhY3Rlcih0aXNzQG1ldGEuZGF0YSRjZWxsX29udG9sb2d5X2NsYXNzKQp0aXNzQG1ldGEuZGF0YVt0aXNzQGNlbGwubmFtZXMsJ2NlbGxfb250b2xvZ3lfaWQnXSA8LSBhcy5jaGFyYWN0ZXIodGlzc0BtZXRhLmRhdGEkY2VsbF9vbnRvbG9neV9pZCkKVFNORVBsb3Qob2JqZWN0ID0gdGlzcywgZG8ubGFiZWwgPSBUUlVFLCBwdC5zaXplID0gMC41LCBncm91cC5ieT0nY2VsbF9vbnRvbG9neV9jbGFzcycpCgpgYGAKCgojIyBDaGVja2luZyBmb3IgYmF0Y2ggZWZmZWN0cwoKCkNvbG9yIGJ5IG1ldGFkYXRhLCBsaWtlIHBsYXRlIGJhcmNvZGUsIHRvIGNoZWNrIGZvciBiYXRjaCBlZmZlY3RzLgpgYGB7cn0KVFNORVBsb3Qob2JqZWN0ID0gdGlzcywgZG8ucmV0dXJuID0gVFJVRSwgZ3JvdXAuYnkgPSAibW91c2Uuc2V4IikKYGBgCgpQcmludCBhIHRhYmxlIHNob3dpbmcgdGhlIGNvdW50IG9mIGNlbGxzIGluIGVhY2ggaWRlbnRpdHkgY2F0ZWdvcnkgZnJvbSBlYWNoIHBsYXRlLgoKYGBge3J9CnRhYmxlKGFzLmNoYXJhY3Rlcih0aXNzQGlkZW50KSwgYXMuY2hhcmFjdGVyKHRpc3NAbWV0YS5kYXRhJHBsYXRlLmJhcmNvZGUpKQpgYGAKCgoKIyBTYXZlIHRoZSBSb2JqZWN0IGZvciBsYXRlcgpXaGVuIHlvdSBzYXZlIHRoZSBhbm5vdGF0ZWQgdGlzc3VlLCBwbGVhc2UgZ2l2ZSBpdCBhIG5hbWUuCgpgYGB7cn0KZmlsZW5hbWUgPSBoZXJlKCcwMF9kYXRhX2luZ2VzdCcsICcwNF90aXNzdWVfcm9ial9nZW5lcmF0ZWQnLCAKICAgICAgICAgICAgICAgICAgICAgcGFzdGUwKCJmYWNzIiwgdGlzc3VlX29mX2ludGVyZXN0LCAiX3NldXJhdF90aXNzLlJvYmoiKSkKcHJpbnQoZmlsZW5hbWUpCnNhdmUodGlzcywgZmlsZT1maWxlbmFtZSkKYGBgCgpgYGB7cn0KIyBUbyByZWxvYWQgYSBzYXZlZCBvYmplY3QKZmlsZW5hbWUgPSBoZXJlKCcwMF9kYXRhX2luZ2VzdCcsICcwNF90aXNzdWVfcm9ial9nZW5lcmF0ZWQnLCAKICAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCgiZmFjcyIsIHRpc3N1ZV9vZl9pbnRlcmVzdCwgIl9zZXVyYXRfdGlzcy5Sb2JqIikpCmxvYWQoZmlsZT1maWxlbmFtZSkKYGBgCgoKCiMgRXhwb3J0IHRoZSBmaW5hbCBtZXRhZGF0YQoKU28gdGhhdCBCaW9odWIgY2FuIGVhc2lseSBjb21iaW5lIGFsbCB5b3VyIGNlbGxfb250b2xvZ3lfY2xhc3NzLCBwbGVhc2UgZXhwb3J0IHRoZW0gYXMgYSBzaW1wbGUgY3N2LgoKYGBge3J9CmhlYWQodGlzc0BtZXRhLmRhdGEpCmBgYAoKCmBgYHtyfQpmaWxlbmFtZSA9IGhlcmUoJzAwX2RhdGFfaW5nZXN0JywgJzAzX3Rpc3N1ZV9hbm5vdGF0aW9uX2NzdicsIAogICAgICAgICAgcGFzdGUwKHRpc3N1ZV9vZl9pbnRlcmVzdCwgIl9mYWNzX2Fubm90YXRpb24uY3N2IikpCndyaXRlLmNzdihGZXRjaERhdGEodGlzcywgYygncGxhdGUuYmFyY29kZScsJ2NlbGxfb250b2xvZ3lfY2xhc3MnLCdjZWxsX29udG9sb2d5X2lkJywgJ2ZyZWVfYW5ub3RhdGlvbicsICd0U05FXzEnLCAndFNORV8yJykpLCBmaWxlPWZpbGVuYW1lKQoKYGBgCgpgYGB7cn0Kc2Vzc2lvbkluZm8oKQpgYGAKCg==